/*

* ------------------------------------------------------------------------
* ------------------------------------------------------------------------
* |     Smart-Shop开源商城系统/ Java商城-首选电商平台系统 请务必保留此注释头信息
* |     开源地址: https://gitee.com/ningbo-qishan/gruul-mall
* ------------------------------------------------------------------------
* ------------------------------------------------------------------------
* |     可正常分享和学习源码,未经授权 不可商用！
* |     商业版中台购买/开源版商业授权 联系技术客服
* |     官网:  https://www.73app.cn/
* ------------------------------------------------------------------------
* ------------------------------------------------------------------------
* |     Copyright (c) 2016-2999 宁波启山智软科技有限公司
* |     版权所有 ,侵权必究！
* ------------------------------------------------------------------------

*/
package com.medusa.gruul.finance.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.medusa.gruul.common.core.util.PageUtils;
import com.medusa.gruul.finance.api.entity.FinanceTradeDetail;
import com.medusa.gruul.finance.model.SearchTradeDetailDto;
import com.medusa.gruul.finance.model.ShopOverviewVo;
import com.medusa.gruul.finance.model.TradeOverviewVo;
import com.medusa.gruul.order.api.model.OrderVo;
import com.medusa.gruul.order.api.model.TradeLineVo;
import com.medusa.gruul.order.api.model.TradeVo;

import java.util.List;

/**
 * <p>
 * 资金交易明细表 服务类
 * </p>
 *
 * @author alan
 * @since 2020 -02-22
 */
public interface IFinanceTradeDetailService extends IService<FinanceTradeDetail> {

    /**
     * 分页获取交易明细
     *
     * @param dto the dto
     * @return the trade detail page
     */
    PageUtils getTradeDetailPage(SearchTradeDetailDto dto);

    /**
     * 获取对账单
     *
     * @param dto the dto
     * @return the trade overview
     */
    TradeOverviewVo getTradeOverview(SearchTradeDetailDto dto);

    /**
     * 添加交易明细
     *
     * @param orderVo the order vo
     */
    void addTrade(OrderVo orderVo);

    /**
     * 添加订单退款记录
     *
     * @param orderVo
     * @return boolean
     */
    boolean addReturn(OrderVo orderVo);


    /**
     * 根据起止时间查询交易明细
     *
     * @param startDate the start date
     * @param endDate   the end date
     * @return the trade vo by time
     */
    TradeVo getTradeVoByTime(String startDate, String endDate);

    /**
     * 根据起止时间分组查询交易明细
     *
     * @param startTime the start time
     * @param endTime   the end time
     * @return the trade vo group by date
     */
    List<TradeLineVo> getTradeVoGroupByDate(String startTime, String endTime);

    /**
     * 获取商铺概览
     *
     * @param startTime the start time
     * @param endTime   the end time
     * @return the overview
     */
    ShopOverviewVo getOverview(String startTime, String endTime);


    /**
     * 商品评价后增加返利数据信息 纳入账单支出
     * @author 张治保
     */
    void addRebateDetail(OrderVo vo);

}
